/*@filename:  J2MySQL.java
 *Created on 2007年11月18日, 下午1:34
 *@author kldscs
 *@note: BankManager 中有关调用MySQL的基础类
 *@verison: 
 *2007-11-20  0.2  纠正Connect()函数 提早断开的处理(hanylic修改);
 *            0.1  基本完成;
 */

package mysql; //数据库操作包
//package bank;
/*载入驱动;
 *MySQL Connector/J是一种JDBC-3.0“类型4”驱动，
 * 这意味着它是一种纯Java程序，实施了3.0版JDBC规范，
 * 并能使用MySQL协议与MySQL服务器直接通信
 */
import java.sql.*;
        
public class J2MySQL  //MySQL操作类
{    
    static private Connection conn=null;  //全局链接对象
    static private ResultSet rs=null;     //全局结果集
    static private Statement stmt=null;   //全局状态
    
//J2MySQL(String server="localhost", String port="3306",
  //        String database="Bank", String user="guest", String passwd="654321") 
    public boolean Connect(String server, String port, String database,
            String user, String passwd)
    /*连接MySQL数据库, 
     *连接成功返回true，失败返回false;
     *传入服务器地址server，端口port， 数据库database，用户名user，密码passwd
     */
    {
        String mydriver ="com.mysql.jdbc.Driver"; //MySQL Connector/J 驱动
        String url="jdbc:mysql://"+server+":"+port+"/"+database; //确定链接对象
        try
        {
            Class.forName(mydriver).newInstance();   //加载connection/j驱动
            System.out.println("\n	Registered MySQL Connector/J.\n"); 
            conn = DriverManager.getConnection(url,user,passwd);  // 建立连接      	
            if (!conn.isClosed())
            {
           	System.out.println("	MySQL  Connected.\n");
                stmt=conn.createStatement();  //提供SQL语句接口
                return true;  //返回真
            }
            else
            {
                System.out.println("    Connector Closed!");
                return false;  //连接提早关闭
            }
        }
        catch(Exception e)
        {
            System.out.println("Error: Connect to MySQL.");
            System.out.println(e.getMessage());
            return false;  //出错返回false
        }
    }  // J2MySQL DONE
    
    public ResultSet Select(String sqlString)  // SELECT语句
    /*数据搜索函数
     *返回搜索结果
     *传入select语句sqlString
     */
    {
        rs=null;  //清空结果集
        
        try
        {   //得到搜索结果 
            rs = stmt.executeQuery(sqlString); 
        }
         catch(SQLException ex)
         {
            System.out.println("Error: SELECT.");
            System.err.println("SELECT > aq.executeQuery:"+ex.getMessage());
         }
  
        return rs;   //返回SELECT结果集
    }
    
    public int Update(String sqlString) // UPDATE
    /*数据更新函数
     *返回更新的行数， 0为失败或出错
     *传入UPDATE语句sqlString
     */
    {
        try   //返回更新行数
        {   return stmt.executeUpdate(sqlString);
         }
         catch(SQLException ex)
         {
             System.out.println("Error: UPDATE.");
             System.err.println(ex.getMessage());
         }
        return 0;
    } // Update DONE
    
    public int Insert(String sqlString) // INSERT
    /*数据写入函数
     *返回更新的行数， 0为失败或出错
     *传入INSERT语句sqlString
     */
    {
        try
        {   return stmt.executeUpdate(sqlString);
         }
         catch(SQLException ex)
         {
             System.out.println("Error: INSERT.");
             System.err.println(ex.getMessage());
         }
        return 0;
    }  // Insert DONE
    
    public int Delete(String sqlString) // DELETE
    /*数据更新函数
     *返回更新的行数， 0为失败或出错
     *传入UPDATE语句sqlString
     */
    {
        try   //返回更新行数
        {   return stmt.executeUpdate(sqlString);
         }
         catch(SQLException ex)
         {
             System.out.println("Error: Delete.");
             System.err.println(ex.getMessage());
         }
        return 0;
    } // Delete DONE
    
    public void Closedb()
    /*关闭数据库的对象
     */
    {
        try
        {
            stmt.close();  // 释放Statement和JDBC资源
            conn.close(); //关闭MySQL连接
     //       rs.close();  //关闭结果集
        }
        catch(SQLException ex)
        {
            System.out.println("Error: CloseDB.");
            System.err.println(ex.getMessage());
        }        
    } // Closedb DONE   
}
